#ifndef _FSCK_H
#define _FSCK_H

#include <iostream>
#include <stdio.h>
#include <assert.h>
#include <fsck.hxx>
using namespace std;

#ifndef TRUE
#define TRUE    1
#endif

#ifndef FALSE
#define FALSE   0
#endif

#ifndef bool
#define bool char
#endif /* bool */

#ifndef byte
#define byte unsigned char
#endif /* byte */

#define FSTOOLS_assert assert

typedef unsigned char boolean_t;
typedef boolean_t File_Status;
typedef unsigned int ulong32;
typedef unsigned long long ulong64;
#ifndef ino_t
typedef ulong32 ino_t;
#endif

#ifndef ino64_t
typedef ulong64 ino64_t;
#endif

enum fsck64PhaseId {
    PHASE_NONE,
    PHASE_START,
    SLICE_MAP_CHECK_PHASE = PHASE_START,
    RESERVED_BLOCK_SCAN_PHASE,
    INODE_SCAN_PHASE,
    VERSION_FILE_SCAN_PHASE,
    RECONNECT_BLOCKS_PHASE,
    DUPLICATE_BLOCK_SCAN_PHASE,
    REFORMAT_SLICE_SCAN_PHASE,
    MULTIPLE_STREAM_CHECK_PHASE,
    DIRECTORY_SCAN_PHASE,
    ALLOCATED_ACL_SCAN_PHASE,
    FREE_ACL_SCAN_PHASE,
    SUMMARY_SCAN_PHASE,
    BMD_PAIRS_SCAN_PHASE,
    TOTAL_PHASES,
    PHASE_INVALID = TOTAL_PHASES
};

enum phase64Status {
    PHASE_NOT_STARTED,
    PHASE_IN_PROGRESS,
    PHASE_DONE,
    PHASE_SKIPPED,
};
#endif
